package com.service.dao.enums;

import com.google.common.collect.Lists;
import com.service.dao.model.MemberStore;
import lombok.Getter;
import lombok.NonNull;

import java.math.BigDecimal;
import java.util.List;

/**
 * <dl>
 * <dt>back-end</dt>
 * <dd>Description:流水类型</dd>
 * <dd>Copyright: Copyright (C) 2015</dd>
 * <dd>Company: </dd>
 * <dd>CreateDate: 2019年09月23日</dd>
 * </dl>
 *
 * @author
 */
public enum MemberJAType {
    //直接推荐奖
    RECOMMEND_11(11, "直接奖") {
        @Override
        public BigDecimal doOptNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }
    },//间接推荐
    RECOMMEND_12(12, "间接奖") {
        @Override
        public BigDecimal doOptNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },//社区奖
    RECOMMEND_13(13, "社区奖") {
        @Override
        public BigDecimal doOptNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },//极差奖(培育奖)
    RECOMMEND_14(14, "节点奖") {
        @Override
        public BigDecimal doOptNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },//充值
    RECHARGE(20, "充值") {
        @Override
        public BigDecimal doOptNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    GIFT_POINTS(21, "积分赠送") {
        @Override
        public BigDecimal doOptNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    OFFLINE_GIFT(22, "线下商家核销,赠送货币") {
        @Override
        public BigDecimal doOptNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    OFFLINE_REBATE(23, "线下商家核销返利") {
        @Override
        public BigDecimal doOptNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },//提款
    WITHDRAW(30, "提现") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },//提现冻结
    FROST_WITHDRAW(31, "提现冻结") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

    },//提现冻结释放
    FROST_WITHDRAW_RELEASE(32, "提现冻结释放") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum;
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum;
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

    },
    FROST_RELEASE_BY_WITHDRAW_REJECT(34, "提现驳回") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

    },
    //转出
    TURN_OUT(41, "转出") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }


    },//转入
    TURN_IN(42, "转入") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }


    },//兑换消耗
    CONVERSION_EXPEND(43, "合成消耗") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },//兑换
    CONVERSION(44, "合成") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },//释放
    RELEASE_BY_SELF(45, "会员自动释放扣除") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    RELEASE_BY_RECOMMEND_11(46, "直推会员加速释放扣除") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    RELEASE_BY_RECOMMEND_12(47, "间推会员加速释放扣除") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    RELEASE_BY_TEAM(48, "会员团队加速释放扣除") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },//挖矿算力
    MINING(50, "产出释放") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum;
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum;
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

    },
    RELEASE_PRODUCT_BY_SELF(51, "会员自动释放产出") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    RELEASE_PRODUCT_BY_RECOMMEND_11(52, "直推会员加速释放产出") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    RELEASE_PRODUCT_BY_RECOMMEND_12(53, "间推会员加速释放产出") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    RELEASE_PRODUCT_BY_TEAM(54, "会员团队加速释放产出") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },//支付订单
    PAY_OTHER(60, "支付礼包(积分)订单") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    PAY_HR_COMBO(61, "支付算力订单") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
//            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
//            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },//核销扣款
    WRITE_OFF(62,"核销"){
        @Override
        public BigDecimal doOptNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }
    },
    REPAYMENT(63,"还款"){
        @Override
        public BigDecimal doOptNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }
    },
    ADMIN_CUT(71, "减扣") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }
    },
    FROST_OCT(80, "otc交易冻结") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }
    },//otc交易冻结释放
    FROST_OCT_RELEASE(81, "otc交易冻结释放") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum;
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum;
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

    },//otc交易支出
    OTC_TRADE_PAY(82, "otc交易支出") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },//otc交易收入
    OTC_TRADE_INCOME(83, "otc交易收入") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },//撤回otc交易，
    OTC_TRADE_CANCEL(84, "撤回otc交易") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

    },//币币交易冻结
    FROST_TRADING_SPOT(90, "币币交易冻结") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }
    },//币币交易冻结释放
    FROST_TRADING_SPOT_RELEASE(91, "币币交易冻结释放") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum;
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum;
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }
    },//币币交易支出
    TRADING_SPOT_TRADE_PAY(92, "币币交易支出") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },//币币交易收入
    TRADING_SPOT_TRADE_INCOME(93, "币币交易收入") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },//撤回币币交易，
    TRADING_SPOT_TRADE_CANCEL(94, "撤回币币交易") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

    },
    TRADING_SPOT_PAY_BACK(95, "币币交易退款") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }
    },
    PRODUCT_CUSTODY_FEE(96, "商品订单托管费") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }
    },
    PRODUCT_CUSTODY_FEE_1_SHARE_SCALE(97, "直推FIL分红") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
//            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
//            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }
    },
    PRODUCT_CUSTODY_FEE_2_SHARE_SCALE(98, "间推FIL分红") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
//            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
//            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }
    },
    PAY_FIL_ORDER_SHARE_1_SCALE(99, "购买算力，直推分红") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
//            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
//            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }
    },
    PAY_FIL_ORDER_SHARE_2_SCALE(100, "购买算力，间推分红") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
//            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
//            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }
    },
    FIL_TEAM_BUSINESS_MEETS_STANDARDS_COM_NUM(101, "分公司业绩达标分红") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
//            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
//            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }
    },
    FIL_TEAM_BUSINESS_MEETS_STANDARDS_PROXY_NUM(102, "代理业绩达标分红") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
//            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
//            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }
    },
    MEMBER_BANK_LOCK(103, "锁仓") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }
    },//挖矿算力
    MINING_FROST(104, "线性释放") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    RENEW_FIL_PLEDGE(105, "质押") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

    },
    RENEW_FIL_GAS(106, "GAS") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
//            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
//            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    RENEW_USDT_DEDUCTION(107, "续约USDT扣费") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    RANK_MINING_REWARD(108, "月排行奖") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    PAY_LOCK_MINING(109, "支付锁仓") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    LOCK_MINING_REWARD(110, "锁仓收益") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    LOCK_MINING_RETURN(111, "锁仓本金") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    PAY_HR_COMBO_PLEDGE(112, "算力质押") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

    },
    PAY_HR_COMBO_PLEDGE_RETURN(113, "算力质押退回") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum.add(num);
        }

    },
    DAILY_SIGN_ADD(114, "签到积分") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },
    PERFORMANCE_REWARD(115, "业绩奖") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    }
    ,NETWORK_REWARD(116, "矿池奖") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.add(num);
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum.subtract(num);
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    },COM_FEE_REWARD(117, "公司收取托管费") {
        @Override
        public BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum;
        }

        @Override
        public BigDecimal doOptFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

        @Override
        public void doOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doOptNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doOptFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public void doReturnOptStore(MemberStore memberStore, BigDecimal num) {
            memberStore.setNum(doReturnNum(memberStore.getNum(), num));
            memberStore.setFrostNum(doReturnFrostNum(memberStore.getFrostNum(), num));
        }

        @Override
        public BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num) {
            return startNum;
        }

        @Override
        public BigDecimal doReturnFrostNum(BigDecimal startNum, BigDecimal num) {
            return startNum;
        }

    }
    ;

    @Getter
    private Integer code;
    @Getter
    private String msg;

    MemberJAType(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }

    public abstract BigDecimal doOptNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num);

    public abstract BigDecimal doOptFrostNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num);

    public abstract void doOptStore(@NonNull MemberStore memberStore, @NonNull BigDecimal num);

    public abstract void doReturnOptStore(@NonNull MemberStore memberStore, @NonNull BigDecimal num);

    public abstract BigDecimal doReturnNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num);

    public abstract BigDecimal doReturnFrostNum(@NonNull BigDecimal startNum, @NonNull BigDecimal num);

    public static MemberJAType valueOf(Integer code) {
        MemberJAType[] jaTypes = values();
        for (MemberJAType item : jaTypes) {
            if (item.getCode().equals(code)) {
                return item;
            }
        }
        return null;
    }

    public static List<Integer> getIncomeType() {
        return Lists.newArrayList(
                MemberJAType.RECOMMEND_11.getCode(),
                MemberJAType.RECOMMEND_12.getCode(),
                MemberJAType.RECOMMEND_13.getCode(),
                MemberJAType.RECOMMEND_14.getCode(),
                MemberJAType.MINING.getCode());
    }


    public static List<Integer> getMiningOutPutType() {
        return Lists.newArrayList(
                MemberJAType.MINING_FROST.getCode(),
                MemberJAType.LOCK_MINING_REWARD.getCode(),
                MemberJAType.MINING.getCode());
    }



    public static List<Integer> getAwardIncomeType() {
        return Lists.newArrayList(
                MemberJAType.RECOMMEND_11.getCode(),
                MemberJAType.RECOMMEND_12.getCode(),
                MemberJAType.RECOMMEND_13.getCode(),
                MemberJAType.RECOMMEND_14.getCode());
    }

    public static List<Integer> getLockType() {
        return Lists.newArrayList(
                MemberJAType.LOCK_MINING_REWARD.getCode());
    }

    public static List<Integer> getMiningIncomeType() {
        return Lists.newArrayList(MemberJAType.MINING.getCode());
    }

    public static List<Integer> getMiningFrostType() {
        return Lists.newArrayList(MemberJAType.MINING.getCode(),MemberJAType.MINING_FROST.getCode());
    }

    public static List<Integer> getMemberJAWithoutType() {
        List<Integer> normalJa = Lists.newArrayList();
        normalJa.add(MemberJAType.FROST_WITHDRAW_RELEASE.getCode());
        normalJa.add(MemberJAType.FROST_OCT_RELEASE.getCode());
        normalJa.add(MemberJAType.FROST_TRADING_SPOT_RELEASE.getCode());
        return normalJa;
    }

    public static List<Integer> getFrostJAType() {
        List<Integer> frostJAType = Lists.newArrayList();
        frostJAType.add(MemberJAType.FROST_WITHDRAW.getCode());
        frostJAType.add(MemberJAType.FROST_OCT.getCode());
        return frostJAType;
    }

    /**
     * 获取平台充值类型
     * @return
     */
    public static List<Integer> getRechargeType() {
        List<Integer> frostJAType = Lists.newArrayList();
        frostJAType.add(MemberJAType.RECHARGE.getCode());
        return frostJAType;
    }

    public static List<Integer> getWithdrawType() {
        List<Integer> frostJAType = Lists.newArrayList();
        frostJAType.add(MemberJAType.WITHDRAW.getCode());
        return frostJAType;
    }

    public static List<Integer> getReleaseType() {
        List<Integer> frostJAType = Lists.newArrayList();
        frostJAType.add(MemberJAType.MINING.getCode());
        frostJAType.add(MemberJAType.MINING_FROST.getCode());
        return frostJAType;
    }

    public static Boolean isFrostJAType(MemberJAType jaType) {
        return getFrostJAType().contains(jaType.getCode());
    }


    public static List<Integer> getTotalCommissionType() {
        List<Integer> frostJAType = Lists.newArrayList();
        frostJAType.add(MemberJAType.PAY_FIL_ORDER_SHARE_1_SCALE.getCode());
        frostJAType.add(MemberJAType.PAY_FIL_ORDER_SHARE_2_SCALE.getCode());
        return frostJAType;
    }

    public static List<Integer> getTotalCommissionIncome() {
        List<Integer> frostJAType = Lists.newArrayList();
        frostJAType.add(MemberJAType.RECOMMEND_11.getCode());
        frostJAType.add(MemberJAType.PAY_FIL_ORDER_SHARE_1_SCALE.getCode());
        return frostJAType;
    }
    public static List<Integer> getSignType() {
        List<Integer> frostJAType = Lists.newArrayList();
        frostJAType.add(MemberJAType.DAILY_SIGN_ADD.getCode());
        return frostJAType;
    }

    public static List<Integer> getComFeeType() {
        List<Integer> frostJAType = Lists.newArrayList();
        frostJAType.add(MemberJAType.COM_FEE_REWARD.getCode());
        return frostJAType;
    }

}
